package com.cxyzy.eventbusdemo

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        EventBus.getDefault().register(this)
        postBtn.setOnClickListener { EventBus.getDefault().post("发射了一个事件") }
        nextBtn.setOnClickListener {
            val intent = Intent(this@MainActivity, CustEventTypeActivity::class.java)
            startActivity(intent)
        }
    }

    /**
     * 自定义一个方法 接收事件,方法名字可以随便写。
     * 发送的数据类型可以自行定义，一般项目中为了区分不同的消息，会定义一个基类，
     * 然后派生出不同的事件子类。可以参考SecondActivity.java
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onEvent(event: String) {
        Toast.makeText(this, event, Toast.LENGTH_SHORT).show()
    }

    override fun onDestroy() {
        super.onDestroy()
        //取消注册 , 防止Activity内存泄漏
        EventBus.getDefault().unregister(this)
    }
}
